package com.daily.DailyStudy.Shallow2DeepCopy;

import lombok.Data;

/**
 * 深拷贝
 * */
@Data
public class Bookshelf_Deep implements Cloneable{

    private Integer num;

    private String name;

    private Book book;

    /**
     * 在 Student 的 clone() 方法中，需要拿到拷贝自己后产生的新的对象，
     * 然后对新的对象的引用类型再调用拷贝操作，实现对引用类型成员变量的深拷贝。
     * */
    @Override
    protected Object clone(){
        try{
            Bookshelf_Deep bookshelf_deep = (Bookshelf_Deep) super.clone();
            bookshelf_deep.book =(Book) book.clone();
            return bookshelf_deep;
        }catch (CloneNotSupportedException e){
            return null;
        }
    }
}
